/*
 * TablaDefiniciones.h
 */

#ifndef TABLADEFINICIONES_H_
#define TABLADEFINICIONES_H_

#define LONG_MAX_NOMBRE_DEFINE 100
#define LONG_MAX_VALOR_DEFINE 100

#include <map>
#include <string>

class TablaDefiniciones {
private:
	std::map<std::string, std::string> tabla;
	typedef std::map<std::string, std::string>::const_iterator tItTabla;
public:
	TablaDefiniciones();
	virtual ~TablaDefiniciones() {}

	/** Agrega una definición a la tabla si esta es válida.
	 * @param nombDef Nombre de definición a agregar.
	 * @param valorDef Valor de la definición a agregar.
	 * @return Verdadero si fue agregada.
	 */
	bool agregarDefinicion(const std::string &nombDef,
			const std::string &valorDef);

	/** Busca si una definición existe en la tabla.
	 * @param defBuscada Definición a buscar.
	 * @return Verdadero si fue agregada.
	 */
	bool existeDefinicion(const std::string &defBuscada) const;

	/** Devuelve el valor de una definición si está fue agregada.
	 * @param valorDef Cadena donde devuelve el valor si se encuentra.
	 * @param defBuscada Cadena con la definición a buscar.
	 */
	bool obtenerDefinicion(std::string &valorDef, const std::string &defBuscada) const;
};

#endif /* TABLADEFINICIONES_H_ */
